/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Library General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301,  USA
 */

/*
 * @version bsp.comoro.Encode v 1.0.0
 * @author Dr.NP <np@bsgroup.org>
 * @package BS.Play
 *
 * Comoro actionscript3 crypt
 */

package bsp.comoro
{
	import flash.utils.ByteArray;
	
	public class Encode
	{
		private var seed : Array = [13, -23, 37, -47, 53, -67, 79, -83];
		
		public function Encode() : void
		{
			return;
		}
		
		public function encode(d : ByteArray) : ByteArray
		{
			d.position = 0;
			
			var r : ByteArray = new ByteArray();
			var i : uint;
			var j : Number;
			var l : uint = d.bytesAvailable;
			
			for (i = 0; i < l; i ++)
			{
				j = d.readUnsignedByte();
				j += (this.seed[i % 8]) * (i + 1);
				j = (j + 0x100) % 0x100;
				
				r.writeByte(j);
			}
			
			return r;
		}
		
		public function decode(d : ByteArray) : ByteArray
		{
			d.position = 0;
			
			var r : ByteArray = new ByteArray();
			var i : uint;
			var j : Number;
			var l : uint = d.bytesAvailable;
			
			for (i = 0; i < l; i ++)
			{
				j = d.readUnsignedByte();
				j -= (this.seed[i % 8]) * (i + 1);
				j = (j + 0x100) % 0x100;
				
				r.writeByte(j);
			}
			
			return r;
		}
	}
}